package org.web.webdisplay.sdk.dto.query;

import java.util.*;
import lombok.Getter;
import lombok.Setter;
import org.web.base.domain.*;
import jakarta.validation.constraints.*;

@Setter
@Getter
public class QueryUserInfoRequest extends ExtendQueryBase {
    /**
    * 圈定 'specifiedAttributeSet' 返回属性信息范围，指定的属性信息与列定义名称保持一致。
    */
    private static final Set<String> COLUMN_SET = new HashSet<>(Arrays.asList("user_info_id", "user_name", "user_number", "department_name", "user_mail", "user_sex", "user_birthday", "user_comments", "create_time", "update_time"));

    /**
    * 圈定 'specifiedAttributeSet' 返回属性信息范围，指定的属性信息与列定义名称保持一致。
    */
    private static final Set<String> SORT_COLUMN_SET = new HashSet<>(Arrays.asList("user_info_id", "user_name", "user_number", "department_name", "user_mail", "user_sex", "user_birthday", "user_comments", "create_time", "update_time"));

    @Override
    public Set<String> getColumnsSet() {
        return COLUMN_SET;
    }

    @Override
    public Set<String> getSortColumnsSet() {
        return SORT_COLUMN_SET;
    }

    /**
    * 根据 'userInfoId' 精确查询.
    */
    private Integer userInfoId;

    /**
    * 根据 'userInfoIdSet' 范围查询.
    */
    private Set<Integer> userInfoIdSet;

    /**
    * 根据 'fuzzyUserName' 模糊查询.
    */
    private String fuzzyUserName;

    /**
    * 根据 'userNumber' 精确查询.
    */
    private Integer userNumber;

    /**
    * 根据 'fuzzyUserNumber' 模糊查询.
    */
    private Integer fuzzyUserNumber;

    /**
    * 根据 'userNumberSet' 范围查询.
    */
    private Set<Integer> userNumberSet;

    /**
    * 根据 'fuzzyDepartmentName' 模糊查询.
    */
    private String fuzzyDepartmentName;

    /**
    * 根据 'userMail' 精确查询.
    */
    private String userMail;

    /**
    * 根据 'fuzzyUserMail' 模糊查询.
    */
    private String fuzzyUserMail;

    /**
    * 根据 'userMailSet' 范围查询.
    */
    private Set<String> userMailSet;

    /**
    * 根据 'userSex' 精确查询.
    */
    private String userSex;

    /**
    * 根据 'userSexSet' 范围查询.
    */
    private Set<String> userSexSet;

    /**
    * 设置大于 'userBirthday' 查询.
    */
    private Date moreThanUserBirthday;

    /**
    * 设置小于 'userBirthday' 查询.
    */
    private Date lessThanUserBirthday;

    /**
    * 设置大于等于 'userBirthday' 查询.
    */
    private Date equalAndMoreThanUserBirthday;

    /**
    * 设置小于等于 'userBirthday' 查询.
    */
    private Date equalAndLessThanUserBirthday;

    /**
    * 设置大于 'userComments' 查询.
    */
    private String moreThanUserComments;

    /**
    * 设置小于 'userComments' 查询.
    */
    private String lessThanUserComments;

    /**
    * 设置大于等于 'userComments' 查询.
    */
    private String equalAndMoreThanUserComments;

    /**
    * 设置小于等于 'userComments' 查询.
    */
    private String equalAndLessThanUserComments;

    /**
    * 设置大于 'createTime' 查询.
    */
    private Date moreThanCreateTime;

    /**
    * 设置小于 'createTime' 查询.
    */
    private Date lessThanCreateTime;

    /**
    * 设置大于等于 'createTime' 查询.
    */
    private Date equalAndMoreThanCreateTime;

    /**
    * 设置小于等于 'createTime' 查询.
    */
    private Date equalAndLessThanCreateTime;

    /**
    * 设置大于 'updateTime' 查询.
    */
    private Date moreThanUpdateTime;

    /**
    * 设置小于 'updateTime' 查询.
    */
    private Date lessThanUpdateTime;

    /**
    * 设置大于等于 'updateTime' 查询.
    */
    private Date equalAndMoreThanUpdateTime;

    /**
    * 设置小于等于 'updateTime' 查询.
    */
    private Date equalAndLessThanUpdateTime;


    @NotNull(message = "pageSize 不能为空")
    @Max(value = 200, message = "pageSize 不能大于200")
    public Integer getPageSize() {
        return super.getPageSize();
    }
}